4

js正则,这点儿就够用了

1、i /[0-9]/i,模糊匹配,不区分大小写,但只匹配一次;
2、g /[0-9]/i,全部匹配,区分大小写;同一正则重复使用test时,若上一个为true,lastIndex会保留作为下一次test的起始位置,bi如:r=/a/g;r.test('ab')//true; r.test('ab')//false;
3、m /[0-9]/i,换行匹配,区分大小写,一般用来匹配每行的首尾;
4、w /w/g,匹配数字,字母,下划线;W:匹配非数字、字母、下划线;
5、s /s/g,匹配空格;S:匹配非空格;
6、d /d/g,匹配数字[0-9];D:匹配非数字;
7、b /b/g,匹配单词(字母,数组,下划线)边界;B:匹配非单词边界;
8、r /r/g,匹配回车符;
9、n /n/g,匹配换行符;
10、n* 匹配该字符的0个或多个;
11、n+ 匹配该字符的一个或多个;
12、n? 匹配该字符的0个或一个;
13、n{X}匹配该字符的X个n;
14、n{X,}匹配至少x个n;
15、n{X,Y}匹配至少X个,最多Y个;会先匹配少的;
16、[0-9]匹配一个任意数字;
17、[a-z]匹配一个任意小写字母;
18、[A-Z]匹配一个任意大写字母;
19、[A-z]匹配一个任意字母(不区分大小写);

匹配一个url地址<a href="http://www.baidu.com/linkurl=6lU96WlFzNK_uJ_JoOHKJbpQHFeuqhd1OFY2s_ZIfbm-2gh6YcN2I7lVk6sJCVKnYvlKBsdlE_huN0cZVsG0da" target="_blank"></a>;
匹配非负整数:re=/^\d+$/;
匹配整数       :re=/^-?\d+$/;
匹配负整数   :re=/^-\d+$/;
匹配非负数   :re=/^[0-9]+\.?[0-9]*$/;
匹配负数       :re=/^-[0-9]+\.?[0-9]*$/;
匹配(首位为字母数字或下划线):re=/^\w(([A-z]|\d)\w?)+$/;
匹配汉子:re=/^[\u4e00-\u9fa5]{0,}$/;
匹配邮箱:/^\w+([-.]?\w+)*@\w*([-.]\w+)*(\.\w+)+$/
去除关键字:re=/xx|ww|ss/g;
str.replace(re,(v)=>{return Array(v.length+1).join('*')})
统计关键字出现的次数:
let middleObject={};
str.replace(re,v=>{middleObject[v]?middleObject[v]++:middleObject[v]=1})
return middleObject;

前瞻:匹配‘?=’ 等号 之后相等的,且小括号之前的内容;

?=:exp1(?=exp2) 查找exp2前面的exp1;

例:'121312'.replace(/1(?=2)/g,'\*');//\*213\*2 只替换2前面的1;



后顾:匹配‘?<=’ 等号 之后相等的,且小括号之后的内容;

?<=:(?<=exp2)exp1 查找exp2后面的exp1

例:'121312'.replace(/(?<=2)1/g,'\*');//"12\*312" 只替换2后面的1;



负前瞻:匹配‘?!’ 感叹号 之后不相等的,且小括号之前的内容;

?!: exp1(?!exp2) 查找后面不是exp2的exp1

例:'121312'.replace(/1(?!2)/g,'\*');//"12\*312" 替换1,这个1后面不能是2;



负前瞻:匹配‘?<!’ 感叹号 之后不相等的,且小括号之后的内容;

?<!:(?<!exp2)exp1 查找前面不是exp2的exp1

例:'121312'.replace(/(?<!2)1/g,'\*');//"\*213\*2" 替换1,这个1前面不能是2;



捕获,非捕获

() 表示捕获分组,()会把每个分组里的匹配的值保存起来,使用$n(n是一个数字,表示第n个捕获组的内容)  (?:) 表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值不会保存起来

金额分割:

"1234567890".replace(/\\B(?=(?:\\d{3})+(?!\\d))/g,",");//1,234,567,890

liubingyang
3.4k 声望353 粉丝